
#ifndef SEMANTICS_CLASS_H

#define SEMANTICS_CLASS_H

#include "generic_table.h"
#include "syntax_tree.h"
#include "semantics_field.h"
#include "semantics_method.h"
#include "semantics_property.h"
#include "semantics_enum.h"

class SemanticsClass
{
public:
	SemanticsClass();
	~SemanticsClass();

	GenericTable<int> * Name;
	GenericTable<int> * InheritName;

	int CurrentContext;
	
	bool ModifierPrivate;
	bool ModifierPublic;
	bool ModifierProtected;
	bool ModifierAbstract;
	bool ModifierFinal;

	bool HasTemplate;
	GenericTable<int> * TemplateNames;

	GenericTable<SemanticsClass> * Classes;
	GenericTable<SemanticsField> * Fields;
	GenericTable<SemanticsProperty> * Properties;
	GenericTable<SemanticsEnum> * Enums;
	GenericTable<SemanticsMethod> * Methods;

#ifdef DEBUG
	void DebugXMLOutput(FILE * fo);
#endif

};
#endif
